{
 "cells": [
  {
   "cell_type": "code",
   "execution_count": 1,
   "metadata": {},
   "outputs": [],
   "source": [
    "import pandas as pd\n",
    "import matplotlib.pyplot as plt\n",
    "plt.rcParams['font.sans-serif'] = ['SimHei'] #用来正常显示中文标签"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 2,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>id</th>\n",
       "      <th>api</th>\n",
       "      <th>count</th>\n",
       "      <th>res_time_sum</th>\n",
       "      <th>res_time_min</th>\n",
       "      <th>res_time_max</th>\n",
       "      <th>res_time_avg</th>\n",
       "      <th>interval</th>\n",
       "      <th>created_at</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>0</th>\n",
       "      <td>162542</td>\n",
       "      <td>/front-api/bill/create</td>\n",
       "      <td>8</td>\n",
       "      <td>1057.31</td>\n",
       "      <td>88.75</td>\n",
       "      <td>177.72</td>\n",
       "      <td>132.0</td>\n",
       "      <td>60</td>\n",
       "      <td>2017-11-01 00:00:07</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1</th>\n",
       "      <td>162644</td>\n",
       "      <td>/front-api/bill/create</td>\n",
       "      <td>5</td>\n",
       "      <td>749.12</td>\n",
       "      <td>103.79</td>\n",
       "      <td>240.38</td>\n",
       "      <td>149.0</td>\n",
       "      <td>60</td>\n",
       "      <td>2017-11-01 00:01:07</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2</th>\n",
       "      <td>162742</td>\n",
       "      <td>/front-api/bill/create</td>\n",
       "      <td>5</td>\n",
       "      <td>845.84</td>\n",
       "      <td>136.31</td>\n",
       "      <td>225.73</td>\n",
       "      <td>169.0</td>\n",
       "      <td>60</td>\n",
       "      <td>2017-11-01 00:02:07</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>3</th>\n",
       "      <td>162808</td>\n",
       "      <td>/front-api/bill/create</td>\n",
       "      <td>9</td>\n",
       "      <td>1305.52</td>\n",
       "      <td>90.12</td>\n",
       "      <td>196.61</td>\n",
       "      <td>145.0</td>\n",
       "      <td>60</td>\n",
       "      <td>2017-11-01 00:03:07</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>4</th>\n",
       "      <td>162943</td>\n",
       "      <td>/front-api/bill/create</td>\n",
       "      <td>3</td>\n",
       "      <td>568.89</td>\n",
       "      <td>138.45</td>\n",
       "      <td>232.02</td>\n",
       "      <td>189.0</td>\n",
       "      <td>60</td>\n",
       "      <td>2017-11-01 00:04:07</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "       id                     api  count  res_time_sum  res_time_min  \\\n",
       "0  162542  /front-api/bill/create      8       1057.31         88.75   \n",
       "1  162644  /front-api/bill/create      5        749.12        103.79   \n",
       "2  162742  /front-api/bill/create      5        845.84        136.31   \n",
       "3  162808  /front-api/bill/create      9       1305.52         90.12   \n",
       "4  162943  /front-api/bill/create      3        568.89        138.45   \n",
       "\n",
       "   res_time_max  res_time_avg  interval           created_at  \n",
       "0        177.72         132.0        60  2017-11-01 00:00:07  \n",
       "1        240.38         149.0        60  2017-11-01 00:01:07  \n",
       "2        225.73         169.0        60  2017-11-01 00:02:07  \n",
       "3        196.61         145.0        60  2017-11-01 00:03:07  \n",
       "4        232.02         189.0        60  2017-11-01 00:04:07  "
      ]
     },
     "execution_count": 2,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "# 读取log文件数据\n",
    "column=[\"id\",\"api\",\"count\",\"res_time_sum\",\"res_time_min\",\"res_time_max\",\"res_time_avg\",\"interval\",\"created_at\"]\n",
    "logdata = pd.read_csv(\"log.txt\",sep='\\t',header=None,names=column)\n",
    "hd = logdata.head()\n",
    "hd"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 3,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "0"
      ]
     },
     "execution_count": 3,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "# 检测是否有重复值\n",
    "dup = logdata.duplicated(subset=[\"api\",\"count\",\"res_time_sum\",\"res_time_min\",\"res_time_max\",\"res_time_avg\",\"interval\",\"created_at\"])\n",
    "dup.sum()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 4,
   "metadata": {
    "scrolled": true
   },
   "outputs": [
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 432x288 with 1 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "# 检测是否有异常值\n",
    "dsc = logdata.describe()\n",
    "dsc[[\"count\",\"res_time_sum\",\"res_time_min\",\"res_time_max\",\"res_time_avg\"]].boxplot()\n",
    "plt.show()\n",
    "# 结果：调用时间都有异常值"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 5,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>id</th>\n",
       "      <th>api</th>\n",
       "      <th>count</th>\n",
       "      <th>res_time_sum</th>\n",
       "      <th>res_time_min</th>\n",
       "      <th>res_time_max</th>\n",
       "      <th>res_time_avg</th>\n",
       "      <th>interval</th>\n",
       "      <th>created_at</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>121064</th>\n",
       "      <td>8957159</td>\n",
       "      <td>/front-api/bill/create</td>\n",
       "      <td>2</td>\n",
       "      <td>142650.55</td>\n",
       "      <td>182.28</td>\n",
       "      <td>142468.27</td>\n",
       "      <td>71325.0</td>\n",
       "      <td>60</td>\n",
       "      <td>2018-03-25 14:50:10</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "             id                     api  count  res_time_sum  res_time_min  \\\n",
       "121064  8957159  /front-api/bill/create      2     142650.55        182.28   \n",
       "\n",
       "        res_time_max  res_time_avg  interval           created_at  \n",
       "121064     142468.27       71325.0        60  2018-03-25 14:50:10  "
      ]
     },
     "execution_count": 5,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "logdata[logdata.res_time_avg>70000]"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 6,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "count                     179496\n",
       "unique                         1\n",
       "top       /front-api/bill/create\n",
       "freq                      179496\n",
       "Name: api, dtype: object"
      ]
     },
     "execution_count": 6,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "# 分析api和interval这两列的数据是否对分析有意义\n",
    "logdata.api.describe()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 7,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "array([60], dtype=int64)"
      ]
     },
     "execution_count": 7,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "logdata.interval.unique()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 8,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>id</th>\n",
       "      <th>count</th>\n",
       "      <th>res_time_sum</th>\n",
       "      <th>res_time_min</th>\n",
       "      <th>res_time_max</th>\n",
       "      <th>res_time_avg</th>\n",
       "      <th>created_at</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>0</th>\n",
       "      <td>162542</td>\n",
       "      <td>8</td>\n",
       "      <td>1057.31</td>\n",
       "      <td>88.75</td>\n",
       "      <td>177.72</td>\n",
       "      <td>132.0</td>\n",
       "      <td>2017-11-01 00:00:07</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1</th>\n",
       "      <td>162644</td>\n",
       "      <td>5</td>\n",
       "      <td>749.12</td>\n",
       "      <td>103.79</td>\n",
       "      <td>240.38</td>\n",
       "      <td>149.0</td>\n",
       "      <td>2017-11-01 00:01:07</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2</th>\n",
       "      <td>162742</td>\n",
       "      <td>5</td>\n",
       "      <td>845.84</td>\n",
       "      <td>136.31</td>\n",
       "      <td>225.73</td>\n",
       "      <td>169.0</td>\n",
       "      <td>2017-11-01 00:02:07</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>3</th>\n",
       "      <td>162808</td>\n",
       "      <td>9</td>\n",
       "      <td>1305.52</td>\n",
       "      <td>90.12</td>\n",
       "      <td>196.61</td>\n",
       "      <td>145.0</td>\n",
       "      <td>2017-11-01 00:03:07</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>4</th>\n",
       "      <td>162943</td>\n",
       "      <td>3</td>\n",
       "      <td>568.89</td>\n",
       "      <td>138.45</td>\n",
       "      <td>232.02</td>\n",
       "      <td>189.0</td>\n",
       "      <td>2017-11-01 00:04:07</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "       id  count  res_time_sum  res_time_min  res_time_max  res_time_avg  \\\n",
       "0  162542      8       1057.31         88.75        177.72         132.0   \n",
       "1  162644      5        749.12        103.79        240.38         149.0   \n",
       "2  162742      5        845.84        136.31        225.73         169.0   \n",
       "3  162808      9       1305.52         90.12        196.61         145.0   \n",
       "4  162943      3        568.89        138.45        232.02         189.0   \n",
       "\n",
       "            created_at  \n",
       "0  2017-11-01 00:00:07  \n",
       "1  2017-11-01 00:01:07  \n",
       "2  2017-11-01 00:02:07  \n",
       "3  2017-11-01 00:03:07  \n",
       "4  2017-11-01 00:04:07  "
      ]
     },
     "execution_count": 8,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "# 结论：api和Interval的值都是唯一的，对数据没有影响，因此可以丢弃。\n",
    "logdata.drop(columns=[\"api\",\"interval\"],axis=1,inplace=True)\n",
    "hd = logdata.head()\n",
    "hd"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 9,
   "metadata": {
    "scrolled": true
   },
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "<class 'pandas.core.frame.DataFrame'>\n",
      "Index: 179496 entries, 2017-11-01 00:00:07 to 2018-05-30 23:10:21\n",
      "Data columns (total 7 columns):\n",
      "id              179496 non-null int64\n",
      "count           179496 non-null int64\n",
      "res_time_sum    179496 non-null float64\n",
      "res_time_min    179496 non-null float64\n",
      "res_time_max    179496 non-null float64\n",
      "res_time_avg    179496 non-null float64\n",
      "created_at      179496 non-null object\n",
      "dtypes: float64(4), int64(2), object(1)\n",
      "memory usage: 11.0+ MB\n"
     ]
    }
   ],
   "source": [
    "# 使用created_at一列作为时间索引\n",
    "logdata.index = logdata.created_at\n",
    "logdata.info()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 10,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "DatetimeIndex(['2017-11-01 00:00:07', '2017-11-01 00:01:07',\n",
       "               '2017-11-01 00:02:07', '2017-11-01 00:03:07',\n",
       "               '2017-11-01 00:04:07', '2017-11-01 00:05:07',\n",
       "               '2017-11-01 00:06:07', '2017-11-01 00:07:07',\n",
       "               '2017-11-01 00:08:07', '2017-11-01 00:09:07',\n",
       "               ...\n",
       "               '2018-05-30 23:01:21', '2018-05-30 23:02:21',\n",
       "               '2018-05-30 23:03:21', '2018-05-30 23:04:21',\n",
       "               '2018-05-30 23:05:21', '2018-05-30 23:06:21',\n",
       "               '2018-05-30 23:07:21', '2018-05-30 23:08:21',\n",
       "               '2018-05-30 23:09:21', '2018-05-30 23:10:21'],\n",
       "              dtype='datetime64[ns]', name='created_at', length=179496, freq=None)"
      ]
     },
     "execution_count": 10,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "logdata.index = pd.to_datetime(logdata.created_at)\n",
    "logdata.index"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 11,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>id</th>\n",
       "      <th>count</th>\n",
       "      <th>res_time_sum</th>\n",
       "      <th>res_time_min</th>\n",
       "      <th>res_time_max</th>\n",
       "      <th>res_time_avg</th>\n",
       "      <th>created_at</th>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>created_at</th>\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>2017-11-01 00:00:07</th>\n",
       "      <td>162542</td>\n",
       "      <td>8</td>\n",
       "      <td>1057.31</td>\n",
       "      <td>88.75</td>\n",
       "      <td>177.72</td>\n",
       "      <td>132.0</td>\n",
       "      <td>2017-11-01 00:00:07</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2017-11-01 00:01:07</th>\n",
       "      <td>162644</td>\n",
       "      <td>5</td>\n",
       "      <td>749.12</td>\n",
       "      <td>103.79</td>\n",
       "      <td>240.38</td>\n",
       "      <td>149.0</td>\n",
       "      <td>2017-11-01 00:01:07</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2017-11-01 00:02:07</th>\n",
       "      <td>162742</td>\n",
       "      <td>5</td>\n",
       "      <td>845.84</td>\n",
       "      <td>136.31</td>\n",
       "      <td>225.73</td>\n",
       "      <td>169.0</td>\n",
       "      <td>2017-11-01 00:02:07</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2017-11-01 00:03:07</th>\n",
       "      <td>162808</td>\n",
       "      <td>9</td>\n",
       "      <td>1305.52</td>\n",
       "      <td>90.12</td>\n",
       "      <td>196.61</td>\n",
       "      <td>145.0</td>\n",
       "      <td>2017-11-01 00:03:07</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2017-11-01 00:04:07</th>\n",
       "      <td>162943</td>\n",
       "      <td>3</td>\n",
       "      <td>568.89</td>\n",
       "      <td>138.45</td>\n",
       "      <td>232.02</td>\n",
       "      <td>189.0</td>\n",
       "      <td>2017-11-01 00:04:07</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2017-11-01 00:05:07</th>\n",
       "      <td>162967</td>\n",
       "      <td>5</td>\n",
       "      <td>521.28</td>\n",
       "      <td>80.64</td>\n",
       "      <td>126.17</td>\n",
       "      <td>104.0</td>\n",
       "      <td>2017-11-01 00:05:07</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2017-11-01 00:06:07</th>\n",
       "      <td>163048</td>\n",
       "      <td>3</td>\n",
       "      <td>464.84</td>\n",
       "      <td>115.97</td>\n",
       "      <td>224.42</td>\n",
       "      <td>154.0</td>\n",
       "      <td>2017-11-01 00:06:07</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2017-11-01 00:07:07</th>\n",
       "      <td>163207</td>\n",
       "      <td>2</td>\n",
       "      <td>337.58</td>\n",
       "      <td>75.58</td>\n",
       "      <td>262.00</td>\n",
       "      <td>168.0</td>\n",
       "      <td>2017-11-01 00:07:07</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2017-11-01 00:08:07</th>\n",
       "      <td>163290</td>\n",
       "      <td>5</td>\n",
       "      <td>773.22</td>\n",
       "      <td>107.14</td>\n",
       "      <td>207.33</td>\n",
       "      <td>154.0</td>\n",
       "      <td>2017-11-01 00:08:07</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2017-11-01 00:09:07</th>\n",
       "      <td>163382</td>\n",
       "      <td>4</td>\n",
       "      <td>669.66</td>\n",
       "      <td>140.26</td>\n",
       "      <td>225.21</td>\n",
       "      <td>167.0</td>\n",
       "      <td>2017-11-01 00:09:07</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "                         id  count  res_time_sum  res_time_min  res_time_max  \\\n",
       "created_at                                                                     \n",
       "2017-11-01 00:00:07  162542      8       1057.31         88.75        177.72   \n",
       "2017-11-01 00:01:07  162644      5        749.12        103.79        240.38   \n",
       "2017-11-01 00:02:07  162742      5        845.84        136.31        225.73   \n",
       "2017-11-01 00:03:07  162808      9       1305.52         90.12        196.61   \n",
       "2017-11-01 00:04:07  162943      3        568.89        138.45        232.02   \n",
       "2017-11-01 00:05:07  162967      5        521.28         80.64        126.17   \n",
       "2017-11-01 00:06:07  163048      3        464.84        115.97        224.42   \n",
       "2017-11-01 00:07:07  163207      2        337.58         75.58        262.00   \n",
       "2017-11-01 00:08:07  163290      5        773.22        107.14        207.33   \n",
       "2017-11-01 00:09:07  163382      4        669.66        140.26        225.21   \n",
       "\n",
       "                     res_time_avg           created_at  \n",
       "created_at                                              \n",
       "2017-11-01 00:00:07         132.0  2017-11-01 00:00:07  \n",
       "2017-11-01 00:01:07         149.0  2017-11-01 00:01:07  \n",
       "2017-11-01 00:02:07         169.0  2017-11-01 00:02:07  \n",
       "2017-11-01 00:03:07         145.0  2017-11-01 00:03:07  \n",
       "2017-11-01 00:04:07         189.0  2017-11-01 00:04:07  \n",
       "2017-11-01 00:05:07         104.0  2017-11-01 00:05:07  \n",
       "2017-11-01 00:06:07         154.0  2017-11-01 00:06:07  \n",
       "2017-11-01 00:07:07         168.0  2017-11-01 00:07:07  \n",
       "2017-11-01 00:08:07         154.0  2017-11-01 00:08:07  \n",
       "2017-11-01 00:09:07         167.0  2017-11-01 00:09:07  "
      ]
     },
     "execution_count": 11,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "logdata[\"2017-11-01\"][0:10]"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 12,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 432x288 with 1 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "# 分析一天中api调用次数情况\n",
    "logdata[\"2017-11-01 \"][\"count\"].plot()\n",
    "plt.show()\n",
    "# 结论：一天api的调用次数在下午三点左右、晚上九点左右比较多。"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 13,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 432x288 with 1 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "# 分析一天中api响应时间\n",
    "logdata[\"2017-11-01\"].resample('20T').mean()[[\"res_time_min\",\"res_time_max\",\"res_time_avg\"]].plot()\n",
    "plt.show()\n",
    "# 结论：在调用高峰时段，api的响应时间会增加。"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 14,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 432x288 with 1 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "# 分析连续几天数据的业务高峰时段\n",
    "logdata[\"2017-11-01\":\"2017-11-10\"][\"count\"].plot()\n",
    "plt.show()\n",
    "# 结论：每天的业务高峰时段相似。"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 15,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>id</th>\n",
       "      <th>count</th>\n",
       "      <th>res_time_sum</th>\n",
       "      <th>res_time_min</th>\n",
       "      <th>res_time_max</th>\n",
       "      <th>res_time_avg</th>\n",
       "      <th>created_at</th>\n",
       "      <th>weekday</th>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>created_at</th>\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>2017-11-01 00:00:07</th>\n",
       "      <td>162542</td>\n",
       "      <td>8</td>\n",
       "      <td>1057.31</td>\n",
       "      <td>88.75</td>\n",
       "      <td>177.72</td>\n",
       "      <td>132.0</td>\n",
       "      <td>2017-11-01 00:00:07</td>\n",
       "      <td>2</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2017-11-01 00:01:07</th>\n",
       "      <td>162644</td>\n",
       "      <td>5</td>\n",
       "      <td>749.12</td>\n",
       "      <td>103.79</td>\n",
       "      <td>240.38</td>\n",
       "      <td>149.0</td>\n",
       "      <td>2017-11-01 00:01:07</td>\n",
       "      <td>2</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2017-11-01 00:02:07</th>\n",
       "      <td>162742</td>\n",
       "      <td>5</td>\n",
       "      <td>845.84</td>\n",
       "      <td>136.31</td>\n",
       "      <td>225.73</td>\n",
       "      <td>169.0</td>\n",
       "      <td>2017-11-01 00:02:07</td>\n",
       "      <td>2</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2017-11-01 00:03:07</th>\n",
       "      <td>162808</td>\n",
       "      <td>9</td>\n",
       "      <td>1305.52</td>\n",
       "      <td>90.12</td>\n",
       "      <td>196.61</td>\n",
       "      <td>145.0</td>\n",
       "      <td>2017-11-01 00:03:07</td>\n",
       "      <td>2</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2017-11-01 00:04:07</th>\n",
       "      <td>162943</td>\n",
       "      <td>3</td>\n",
       "      <td>568.89</td>\n",
       "      <td>138.45</td>\n",
       "      <td>232.02</td>\n",
       "      <td>189.0</td>\n",
       "      <td>2017-11-01 00:04:07</td>\n",
       "      <td>2</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "                         id  count  res_time_sum  res_time_min  res_time_max  \\\n",
       "created_at                                                                     \n",
       "2017-11-01 00:00:07  162542      8       1057.31         88.75        177.72   \n",
       "2017-11-01 00:01:07  162644      5        749.12        103.79        240.38   \n",
       "2017-11-01 00:02:07  162742      5        845.84        136.31        225.73   \n",
       "2017-11-01 00:03:07  162808      9       1305.52         90.12        196.61   \n",
       "2017-11-01 00:04:07  162943      3        568.89        138.45        232.02   \n",
       "\n",
       "                     res_time_avg           created_at  weekday  \n",
       "created_at                                                       \n",
       "2017-11-01 00:00:07         132.0  2017-11-01 00:00:07        2  \n",
       "2017-11-01 00:01:07         149.0  2017-11-01 00:01:07        2  \n",
       "2017-11-01 00:02:07         169.0  2017-11-01 00:02:07        2  \n",
       "2017-11-01 00:03:07         145.0  2017-11-01 00:03:07        2  \n",
       "2017-11-01 00:04:07         189.0  2017-11-01 00:04:07        2  "
      ]
     },
     "execution_count": 15,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "# 分析周末访问量量是否有增加\n",
    "logdata[\"weekday\"] = logdata.index.weekday\n",
    "logdata.head()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 16,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "array([False,  True])"
      ]
     },
     "execution_count": 16,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "# 增加每天是否周末字段\n",
    "logdata[\"weekend\"] = logdata[\"weekday\"].isin({5,6})\n",
    "logdata.weekend.unique()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 17,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 432x288 with 1 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "weekend = logdata.groupby([\"weekend\",logdata.index.hour])[\"count\"].mean().unstack(level=0)\n",
    "weekend.plot()\n",
    "plt.show()\n",
    "# 结论：周末下午和晚上的平均访问量，比工作日多"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [],
   "source": []
  }
 ],
 "metadata": {
  "kernelspec": {
   "display_name": "Python 3",
   "language": "python",
   "name": "python3"
  },
  "language_info": {
   "codemirror_mode": {
    "name": "ipython",
    "version": 3
   },
   "file_extension": ".py",
   "mimetype": "text/x-python",
   "name": "python",
   "nbconvert_exporter": "python",
   "pygments_lexer": "ipython3",
   "version": "3.6.8"
  }
 },
 "nbformat": 4,
 "nbformat_minor": 2
}
